package com.fuershiye.woman.monitor.model;

import com.fuershiye.woman.monitor.utils.MyUtilString;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

/**
 * @author yongyongdong
 * 
 * 具体的指标模型
 * 指标不可删除,只可修改
 * code不可重复
 *
 */
@SuppressWarnings("serial")
@Entity
@Table(name = "indicator")
public class Indicator  extends LongIdEntity{
	
	private String name;
	/** 指标级别
	 * 一级（名称前无空格）
	 * 二级（名称前一个汉字空格）
	 * 三级（名称前两个汉字空格）
	 * 四级（名称前四个汉字空格）
	 */
	private Integer level;
	//指标编码
	private String code;
	//报表的类型 	表 forms id
	private Long formsid;
	//指标的类型 	表 indicator_type id
	private Long type;
	//父级指标的id
	private Long pid;
	//父子指标的关系：0 无父子关系（默认）
	//父子指标的关系：1 父子指标为相同部门（仅展示用父子指标各上报数据）
	//父子指标的关系：2 父子指标可为不同部门（仅展示用父子指标各上报数据）
	//父子指标的关系：3 父指标是同部门子指标之和（无需上报父指标数据）
	//父子指标的关系：4 父指标可为不同部门指标之和（同年份/同指标/只允许一个部门上报）
	private Integer prule;
	//指标内的排序
	private Long sort;
	//指标的单位	表 unit id
	private String unit;
//	//各十三五期间，该指标的基值（当年的目标值），删除掉，改成每个年份单独上报，report_info里面
//	private Double base;
	//各十三五期间，本指标的目标值
	private Double aim;
	//指标数值的有效位数 2
	private Integer places;
	//该指标是否是国家指标	0:不是(默认);1:是
	private Integer country;
	//该指标是否是省级监测指标	0:不是(默认);1:是
	private Integer province;
	//指标的监测类型 1：妇女 2：儿童 3：经济(enum MonitorType )
	private Integer sex;
	//指标是否分性別 0：否 1：是
	private Integer monitor;
    //上报类型 1:必须上报;2:可免报;0:其他
	private Integer need;
	//数据是否公开:	0:其他(默认);1:可公开数据;2:仅内部可看
	private Integer hide;
	//指标所属规则	package com.fuershiye.woman.monitor.constants.Rules
	private Integer rule;
	//指标描述
	@Column(name="description",length=5000,columnDefinition="text")
	private String description;
	//指标描述
	@Column(name="supplement",length=5000,columnDefinition="text")
	private String supplement;
	//创建时间
	private Date ctime;
	//修改时间
	private Date mtime;
	//0:删除;1:正常
	private Integer status;

	public Integer getLevel() {
		return level;
	}
	public void setLevel(Integer level) {
		this.level = level;
	}
	public Integer getNeed() {
		return need;
	}
	public void setNeed(Integer need) {
		this.need = need;
	}
	public Integer getHide() {
		return hide;
	}
	public void setHide(Integer hide) {
		this.hide = hide;
	}
	public Double getAim() {
		return aim;
	}
	public void setAim(Double aim) {
		this.aim = aim;
	}
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public void setName(String name) {
        this.name = MyUtilString.getSubIname(name);
	}
	public void setType(Long type) {
		this.type = type;
	}
	public void setPid(Long pid) {
		this.pid = pid;
	}
	public void setPrule(Integer prule) {
		this.prule = prule;
	}
	public void setSort(Long sort) {
		this.sort = sort;
	}
	public void setUnit(String unit) {
		this.unit = unit;
	}
	public void setPlaces(Integer places) {
		this.places = places;
	}
	public void setCtime(Date ctime) {
		this.ctime = ctime;
	}
	public void setCountry(Integer country) {
		this.country = country;
	}
	public void setProvince(Integer province) {
		this.province = province;
	}
	public void setSex(Integer sex) { this.sex = sex; }
	public void setDescription(String description) {
		this.description = description;
	}
	public void setMtime(Date mtime) {
		this.mtime = mtime;
	}
	public void setRule(Integer rule) {
		this.rule = rule;
	}
	public void setStatus(Integer status) {
		this.status = status;
	}

	public String getSupplement() {
		return supplement;
	}
	public void setSupplement(String supplement) {
		this.supplement = supplement;
	}

	public Long getFormsid() {
		return formsid;
	}

	public void setFormsid(Long formsid) {
		this.formsid = formsid;
	}

	public Integer getMonitor() {
		return monitor;
	}

	public void setMonitor(Integer monitor) {
		this.monitor = monitor;
	}

	/**
	 * 一级（名称前无空格）
	 * 二级（名称前一个汉字空格）
	 * 三级（名称前两个汉字空格）
	 * 四级（名称前四个汉字空格）
	 * */
	public String getName() {
		if(name==null){
			return name;
		}
		name=name.trim();
		if(level==null||level==1){
			return name;
		}else if(level==2){
			return "**"+name;
		}else if(level==3){
			return "****"+name;
		}else if(level==4){
			return "********"+name;
		}
		return name;
	}
	public Long getType() {
		return type;
	}
	public Long getPid() {
		return pid;
	}
	public Integer getPrule() {
		return prule;
	}
	public Long getSort() {
		return sort;
	}
	public String getUnit() {
		return unit;
	}
	public Integer getPlaces() {
		return places;
	}
	public Date getCtime() {
		return ctime;
	}
	public Integer getCountry() {
		return country;
	}
	public Integer getProvince() {
		return province;
	}
	public Integer getSex() { return sex; }
	public String getDescription() {
		return description;
	}
	public Date getMtime() {
		return mtime;
	}
	public Integer getRule() {
		if(null==rule){
			return 0;
		}
		return rule;
	}
	public Integer getStatus() {
		return status;
	}
	
}

